package design_pattern.WaitingRequestQueue;

/**
 * @Author: 蔡翔
 * @Date: 2019/11/10 10:51
 * @Version 1.0
 * （重要）
 *  实现的功能，一个线程一直在生产消息 到任务队列（队列可以是优先队列），一个线程一直 一直从哪个 任务队列 消费数据。
 *  用来解决的场景：当一个线程很忙 来不及处理 另外一个线程交给它的 任务，所以加入一个任务队列存放 那个忙的线程 要执行的任务。
 */
public class SuspendClient {
    public static void main(String[] args) {
        final RequestQueue queue = new RequestQueue();
        // 注意 这里传进去 一个RequestQueue的类，然后修改 RequestQueue 这个类的成员变量，这样RequestQueue就相当于一个共享数据
        // 注意 这种方式要和 新建一个类然后赋值给新的类，这个新的类是原始类的副本，修改这个新的类是不会印象原有的类。但通过方法传输的形式是可以的
        new ClientThread(queue,"CXCX").start();
        ServerThread serverThread = new ServerThread(queue);
        serverThread.start();

        try {
            Thread.sleep(11000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        //
        serverThread.close();
    }
}
